<template>
	<view>
		<!-- 搜索框容器 -->
		<view class="search-container">
			<view class="search-box">
				<input class="search-input" type="text" placeholder="请输入搜索内容" v-model="searchQuery" />
				<button class="search-btn" @click="onSearch">查询</button>
			</view>
		</view>

		<!-- Swiper 轮播图 -->
		<swiper class="swiper" :indicator-dots="true" :autoplay="true" interval="3000" duration="500" circular>
			<swiper-item v-for="(item, index) in carousel" :key="index">
				<view class="swiper-item-content"
					:style="{ backgroundImage: 'url(' + item.imageUrl + ')', backgroundSize: 'cover', backgroundPosition: 'center' }">
				</view>
			</swiper-item>
		</swiper>

		<!-- 公告区域 -->
		<view class="announcement-container">
			<text class="announcement-title">公告：</text>
			<view class="announcement-marquee">
				<text class="announcement-text" :style="{ left: `${marqueeLeft}px` }">
					{{ announcement }}
				</text>
			</view>
		</view>

		<!-- 热门信息区域 -->
		<view class="hot-msg">
			热门信息
		</view>
		<view class="hot-info-container">
			<view class="hot-info-item" v-for="(item, index) in hotInfo" :key="index">
				<view class="hot-info-text">{{ item.title }}</view>
				<view class="hot-info-image"
					:style="{ backgroundImage: item.imageUrl ? 'url(' + item.imageUrl + ')' : '', backgroundSize: 'contain', backgroundPosition: 'center', backgroundRepeat: 'no-repeat' }">
				</view>

			</view>
		</view>
	</view>
</template>

<script>
	import {
		getContentList,getNoticeList
	} from '@/api/content/content.js'
	export default {
		data() {
			return {
				// 搜索框输入内容
				searchQuery: '',
				// 公告内容
				announcement: '欢迎使用我们的应用！目前活动正在火热进行中，快来参与吧！ | 系统将于本周五凌晨 2 点至 4 点进行维护，敬请谅解。',
				// 跑马灯相关变量
				marqueeLeft: 0, // 跑马灯文本的当前位置
				containerWidth: 0, // 跑马灯容器宽度
				textWidth: 0, // 跑马灯文本宽度
				marqueeSpeed: 2, // 跑马灯滚动速度
				// 热门信息数据
				hotInfo: [{
						text: '限时优惠，快来参与！',
						image: 'https://example.com/image1.jpg'
					},
					{
						text: '新品上线，抢先体验！',
						image: 'https://example.com/image2.jpg'
					},
					{
						text: '活动倒计时，马上结束！',
						image: ''
					},
					{
						text: '限时优惠，快来参与！',
						image: 'https://example.com/image1.jpg'
					},
					{
						text: '新品上线，抢先体验！',
						image: 'https://example.com/image2.jpg'
					},
					{
						text: '活动倒计时，马上结束！',
						image: ''
					},
				],
				// 轮播数据
				carousel: []
			};
		},
		mounted() {
			this.queryContent();
			this.initMarquee();
			this.queryNotice()
		},
		methods: {
			// 查询按钮点击事件
			onSearch() {
				uni.showToast({
					title: `查询内容: ${this.searchQuery}`,
					icon: 'none',
				});
			},
			// 初始化跑马灯
			initMarquee() {
				const query = uni.createSelectorQuery().in(this);
				query.select('.announcement-marquee').boundingClientRect();
				query.select('.announcement-text').boundingClientRect();
				query.exec(res => {
					this.containerWidth = res[0].width;
					this.textWidth = res[1].width;
					this.startMarquee();
				});
			},
			// 开始滚动
			startMarquee() {
				setInterval(() => {
					this.marqueeLeft -= this.marqueeSpeed;
					if (Math.abs(this.marqueeLeft) >= this.textWidth) {
						this.marqueeLeft = this.containerWidth;
					}
				}, 20);
			},
			// 查询内容并分类
			queryContent() {
				getContentList()
					.then((res) => {
						const data = res.data;

						// 确保所有图片链接都加上前缀
						const baseURL = 'http://localhost:8080';

						// 按照 type 字段分类为 carousel 和 hot_news
						const categorizedData = {
							carousel: [],
							hot_news: []
						};

						data.forEach((item) => {
							// 为图片链接添加前缀，并且更新回item中
							if (item.imageUrl) {
								item.imageUrl = baseURL + item.imageUrl; // 更新图片链接
							}

							// 根据type字段分类
							if (item.type === 'carousel') {
								categorizedData.carousel.push(item);
							} else if (item.type === 'hot_news') {
								categorizedData.hot_news.push(item);
							}
						});

						this.carousel = categorizedData.carousel;
						// 使用 categorizedData 来更新 hotInfo
						this.hotInfo = categorizedData.hot_news;
						console.log(categorizedData); // 打印分类后的数据
					})
					.catch((error) => {
						console.error(error); // 错误处理
					});
			},
			
			//查询公告
			queryNotice(){
				getNoticeList().then((res) =>{
					const data = res.data
					// 提取所有的 noticeTitle，并用 | 连接
					this.announcement= data.map(item => item.noticeTitle).join(' | ');
					
					console.log(this.announcement);
					
				})
				.catch((error) =>{
					
				})
			}

		},
	};
</script>

<style>
	/* 搜索框容器 */
	.search-container {
		width: 100%;
		padding: 20rpx;
		box-sizing: border-box;
		display: flex;
		justify-content: center;
		background-color: rgba(255, 19, 19, 0.8);
	}

	/* 搜索框布局 */
	.search-box {
		position: relative;
		width: 80%;
		max-width: 600rpx;
	}

	.search-input {
		width: 100%;
		height: 40px;
		padding: 10rpx 80rpx 10rpx 20rpx;
		border-radius: 30rpx;
		border: 1px solid #ccc;
		font-size: 28rpx;
		box-sizing: border-box;
		background-color: #fff;
	}

	.search-btn {
		position: absolute;
		top: 50%;
		right: 10rpx;
		transform: translateY(-50%);
		height: 60rpx;
		width: 100rpx;
		line-height: 60rpx;
		text-align: center;
		border-radius: 30rpx;
		background-color: #ff9d00;
		color: #fff;
		border: none;
		font-size: 25rpx;
		cursor: pointer;
		box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.2);
	}

	.search-btn:hover {
		background-color: #4682b4;
	}

	/* Swiper 轮播图 */
	.swiper {
		width: 100%;
		height: 400rpx;
		margin-top: 20px;
	}

	.swiper-item-content {
		display: flex;
		justify-content: center;
		align-items: center;
		width: 100%;
		height: 100%;
		font-size: 36rpx;
		color: #fff;
		text-align: center;
	}

	.uni-bg-red {
		background-color: red;
	}

	.uni-bg-green {
		background-color: green;
	}

	.uni-bg-blue {
		background-color: blue;
	}

	/* 公告区域 */
	.announcement-container {
		margin-top: 20rpx;
		padding: 20rpx;
		background-color: #f5f5f5;
		border-radius: 10rpx;
		overflow: hidden;
		/* 防止跑马灯文本溢出 */
	}

	.announcement-title {
		font-size: 32rpx;
		font-weight: bold;
		color: #333;
		margin-bottom: 10rpx;
	}

	.announcement-marquee {
		position: relative;
		width: 100%;
		height: 40rpx;
		overflow: hidden;
	}

	.announcement-text {
		position: absolute;
		white-space: nowrap;
		font-size: 28rpx;
		color: red;
	}

	/* 热门信息区域 */

	.hot-msg {
		font-size: 20px;
		font-weight: bold;
		margin-left: 10px;
		margin-top: 20px;
	}

	.hot-info-container {
		margin-top: 20rpx;
		padding: 20rpx;
	}

	.hot-info-item {
		display: flex;
		height: 100px;
		align-items: center;
		margin-bottom: 15rpx;
		background-color: #fff;
		padding: 15rpx;
		border-radius: 10rpx;
		box-shadow: 0 2rpx 5rpx rgba(0, 0, 0, 0.1);
	}

	.hot-info-text {
		flex: 1;
		font-size: 30rpx;
		color: #333;
	}

	.hot-info-image {
		width: 280rpx;
		/* 设置较大的宽度 */
		height: 150rpx;
		/* 设置较大的高度 */
		border-radius: 150rpx;
		/* 增大圆角半径 */
		margin-left: 15rpx;
		background-image: url('');
		/* 清空背景图像 */
		background-size: cover;
		/* 保证图片覆盖整个区域 */
		background-position: center;
		/* 图片居中 */
		background-repeat: no-repeat;
		/* 防止图片重复 */
	}
</style>